<?php
/**
 * 该插件为免费软件，禁止出售；
 * 该插件远程调用官方授权接口，非破解程序；
 * 该插件仅为方便PB免费用户获取授权码，如若官方禁用相关接口，则插件自动失效。
 */
namespace app\admin\controller\system;

use core\basic\Controller;
use core\basic\Config;

class LicenseController extends Controller
{
    // 服务器地址
    private $server = 'ht'.'tp'.'s:'.'//'.'www'.'.'.'p'.'bo'.'ot'.'cm'.'s.'.'co'.'m';

    public function index() {
        // 修改参数配置
        if ($_POST) {
            unset($_POST['upload']); // 去除上传组件
            foreach ($_POST as $key => $value) {
                if (! preg_match('/^[\w\-]+$/', $key)) {
                    continue;
                }
                $config = array(
                    'debug',
                    'sn',
                    'sn_user',
                    'pagenum',
                    'tpl_html_cache',
                    'tpl_html_cache_time',
                    'session_in_sitepath',
                );
                if (in_array($key, $config)) {
                    if ($key == 'tpl_html_cache_time' && ! $value) {
                        $value = 900;
                    } else {
                        $value = post($key);
                    }
                    $this->modConfig($key, $value);
                }
            }
            
            $this->log('修改参数配置成功！');
            path_delete(RUN_PATH . '/config'); // 清理缓存的配置文件
            
            success('修改成功！', url('/admin/License/index', false));
        }
        $configs = model('admin.system.Config')->getList();
        $configs['sn']['value'] = $this->config('sn');
        $configs['sn_user']['value'] = $this->config('sn_user');
        $this->assign('configs', $configs);
        $this->display('system/license.html');
    }
    public function getLicense(){
        $domain = [];
        //查找域名
        $main_domain = $this->config('main_domain');
        if($main_domain==''){
            json(0,'全局配置->配置参数->基本配置->网站主域名 不能为空');
        }else{
            $domain[] = $this->config('main_domain');
        }
        //如果是独立手机域名
        if( $this->config('open_wap')==1 ){
            if( $this->config('wap_domain')=='' ){
                json(0,'全局配置->配置参数->基本配置->手机版域名绑定 不能为空');
            }else{
                $domain[] = $this->config('wap_domain');
            }
        }
        //区域域名
        $area_domain = \core\basic\Db::table('ay_area')->field('domain')->where("name='domain'")->select();
        foreach( $area_domain as $i=>$v ){
            if( $v->domain!=='' ){
                $domain[] = $v->domain;
            }
        }
        $license = '';
        foreach( $domain as $row ){
            $license .= $this->PbootCmsLicenseAPI($row) . ',';
        }
        $license = rtrim( $license, ',' );
        if( $license=='' ){
            json(0,'远程获取授权失败！');
        }else{
            json(1,$license);
        }
    }

    public function getLicenseAll(){
        $domain = [];
        //查找域名
        $sn_domain = $_POST['sn_domain'];

        if($sn_domain==''){
            json(0,'授权域名不能为空');
        }else{
            $domain = preg_split('/\s+/', str_replace(' ','', $sn_domain));
        }
        
        $license = '';
        foreach( $domain as $value ){
            $license .= $this->PbootCmsLicenseAPI($value) . ',';

        }

        $license = rtrim( $license, ',' );
        if( $license=='' ){
            json(0,'远程获取授权失败！');
        }else{
            json(1,$license);
        }
    }

    //获取远程授权
    protected function PbootCmsLicenseAPI($domain){
        $api_url = $this->server.'/'.'?'.'p='.'/'.'Li'.'ce'.'ns'.'e'.'/'.'ge'.'t'.'w'.'x';
        $data['domain']=$domain;
        $resulet = json_decode(get_url($api_url,$data));
        if( $resulet->code==1 ){
            return $resulet->data->sn;
        }
    }

    // 修改配置文件
    private function modConfig($key, $value)
    {
        $value = str_replace(' ', '', $value); // 去除空格
        $value = str_replace('，', ',', $value); // 转换可能输入的中文逗号
        if (! preg_match('/^[\w\s\,\-]+$/', $value)) {
            return;
        }
        
        $config = file_get_contents(CONF_PATH . '/config.php');
        if (preg_match("'$key'", $config)) {
            if (preg_match('/^[0-9]+$/', $value)) {
                $config = preg_replace('/(\'' . $key . '\'([\s]+)?=>([\s]+)?)[\w\'\"\s,]+,/', '${1}' . $value . ',', $config);
            } else {
                $config = preg_replace('/(\'' . $key . '\'([\s]+)?=>([\s]+)?)[\w\'\"\s,]+,/', '${1}\'' . $value . '\',', $config);
            }
        } else {
            $config = preg_replace('/(return array\()/', "$1\r\n\r\n\t'$key' => '$value',", $config); // 自动新增配置
        }
        return file_put_contents(CONF_PATH . '/config.php', $config);
    }


}